Unidad Profesional Interdiciplinaria en Ingeniería y Tecnologías Avanzadas
P05: Convolución y correlación
Integrantes
- Brayan Francisco Ramirez Saldaña
- Jennifer Pacheco Muñoz
- Luis Fernando Ramirez Diosdado
- Rodrigo Flores Gonzales
- Sara Martinez Sánchez
Objetivos
- Conocer métodos básicos de integración numérica
- Manipulación de instrucciones en MATLAB
- Simular convoluciones y correlaciones de señales continuas
Introducción (Integración Numérica)
La integración numérica es una técnica matemática utilizada para encontrar el valor aproximado de una integral cuando no se puede obtener de manera exacta. En esta técnica se divide el intervalo de integración en intervalos mas pequeños y se utiliza una fórmula para aproximar el área bajo la curva en cada subintervalo.Teorema fundamental del calculo
- Se nos plantea la idea de basarnos en el teorema fundamental del calculo, el cual nos dice que
, sin embargo no es nada facil logralo, debido al proceso que conlleva pasar por cada uno de los metodos de integracion que se lleguen a usar. Como en el ejemplo propuesto, donde buscamos la antiderivada de
, donde 
syms x %crear símbolo de x
f = exp(-x.^2); %definir la función
integral = int(f,-1,1); %calcular la integral de la función de -1 a 1
disp(integral); %mostrar el valor de la integral en la consola
x_vals = linspace(-1,1,100); %crear 100 valores de x entre -1 y 1
y_vals = subs(f,x,x_vals); %evaluar la función en los valores de x
plot(x_vals,y_vals); %graficar la función
title('Ejemplo1'); %agregar título al gráfico
xlabel('x'); %etiquetar eje x
ylabel('f(x)'); %etiquetar eje y
Formulas de Newton Cotes
- La segunda propuesta relacionada a las ecuacuines de Newton Cotes, nos dicen con ayuda de el teorema de lagrange, que en lugar de integrar la funcion, integramos el polinomio con el error, lo cual nos da un serie de ecuaciones de Newton Cotes que dependen del grado del cual queremos encontrar el polinomio, lo ideal dentro de este metodo es empezar desde el extremo inferior de integracion a hasta el extremo su'perior b elijiendo un punto de partición. (Consideradas formulas de cuadratura)
Dentro de este metodo encontramos ciertas reglas, como lo son:
- Regla del trapecio:Encontramos un polinomio de grado 1, para lo que necesitamos 2 puntos de interpolación. Y dentro de el ejemplo se nos muestra como
donde
. - Regla de simpson:Aquí en lugar de encontrar el area de f dentro de los intervalos, buscamos el area de la parabola definida por los puntos de x.Para interpolar 3 puntos para encontrar un polinomio de segundo grado, que dentro del ejemplo se muestra como
donde
. - Regla de los tres octavos de simpson:(Para polinomios de grado 3) Es una formula cerradan donde ocupamos los extremos de integración para encontrar la interpolación y aplicando simpson nos queda
donde 
Formulas cerradas de Newton-Cotes Compuestas
- Hablamos de una idea relativamente mas sencilla, donde subdividimos el intervalo en los subintervalos que se requieran, dependiendo el metodo que hayamos escojido, de tal forma que el area se aproxime mas. Tomando en cuenta el ejemplo de aproximación:

Si aplicamos las reglas que ya conocemos obtenemos:
- Regla compuesta del trapecio (Para nuestro ejemplo):
dentro de
- Regla compuesta de Simpson (Para nuestro ejemplo):
dentro de 
En ambas el proceso es el mismo que en su version anterios, solamente que se replica un par de veces mas, dependiendo la cantidad de trapecios o simpson's que usemos para aproximarnos a la antiderivada de la función, cabe resaltar que el número de simpson's compuestos siempre va a ser par.
(Para ejemplificar un poco el tipo de graficas de estas reglas, tome otros ejemplos.)
% Definición del intervalo y la función a integrar
a = 0; b = pi; % Intervalo de integración
f = @(x) sin(x); % Función a integrar
% Especificación del número de subintervalos
n = 50; % Número de subintervalos
% Fórmula de la regla del trapecio compuesta
h = (b-a)/n; % Tamaño de cada subintervalo
x = linspace(a,b,n+1); % Puntos de división
y = f(x); % Alturas de la función en los puntos de división
int_aprox = (sum(y)-y(1)/2-y(end)/2)*h; % Fórmula de la regla del trapecio compuesta
% Gráfica de la función y los trapecios
x_func = linspace(a,b,1000); % Puntos para graficar la función
y_func = f(x_func); % Valores de la función
y_trapecios = f(x); % Alturas de los trapecios
y_trapecios([1,end]) = 0; % Corrección de las alturas de los extremos
figure; % Creación de la figura
hold on; % Mantenimiento de los gráficos anteriores
plot(x_func,y_func); % Graficar la función
area(x,y_trapecios,0); % Graficar los trapecios
xlabel('x'); ylabel('y'); % Etiquetas de los ejes
title(['Regla del trapecio compuesta (n=',num2str(n),')']); % Título con el valor de n
legend('Función','Trapecios'); % Leyenda de la gráfica
% Definición del intervalo y la función a integrar
a = 0; b = pi/2; % Intervalo de integración
f = @(x) sin(x.^2); % Función a integrar
% Especificación del número de subintervalos y la fórmula de Simpson compuesta
n = 6; % Número de subintervalos (debe ser par)
h = (b-a)/n; % Tamaño de los subintervalos
x = linspace(a,b,n+1); % Puntos de los subintervalos
S = 0; % Inicialización de la suma
S = S + f(x(i)) + 4*f(x(i+1)) + f(x(i+2)); % Fórmula de Simpson compuesta
int_aprox = S*h/3; % Aproximación de la integral
% Gráfica de la función y los subintervalos de integración
xx = linspace(a,b,100); % Puntos para graficar la función
yy = f(xx); % Valores de la función en los puntos
xx2 = linspace(a,b,n+1); % Puntos de los subintervalos para graficar
yy2 = f(xx2); % Valores de la función en los puntos
P = zeros(size(x)); P(2:2:end-1) = 4; P([1,end]) = 1; % Pesos de la regla de Simpson
yy3 = P.*yy2; yy3(2:2:end) = yy3(2:2:end)*4; % Ajuste de los pesos para la regla de Simpson compuesta
figure; % Creación de la figura
hold on; % Mantenimiento de los gráficos anteriores
plot(xx,yy,'b'); % Graficar la función
stem(xx2,yy2,'r','filled'); % Graficar los subintervalos de integración
patch([xx2(1:end-1);xx2(1:end-1);xx2(2:end);xx2(2:end)],[yy3(1:end-1);zeros(size(yy3(1:end-1)));yy3(2:end);zeros(size(yy3(2:end)))],'g'); % Graficar la aproximación de la integral
xlabel('x'); ylabel('y'); % Etiquetas de los ejes
title(['Regla de Simpson compuesta (n=',num2str(n),')']); % Título con el valor de n
legend('Función','Subintervalos','Aproximación de la integral'); % Leyenda de la gráfica
Cuadratura Gaussiana
Por último, dada una intedral definida de a a b, en general intenta aproximar por evaluaciones de la funcion en determinados puntos por determinadas constantes, elijiendo la cantidad de evaluaciones, pero con sus respectivas restricciones y diferencia de las formulas de Newton-Cote, en este metodo nos apoyamos de los polinomios de Legendre.
Polinomios de Legendre
- Se trata de polinomios que encontramos entre -1 y 1

Cuentan con ciertas prpiedades interesantes dependiendo de que grado sea el polinomio, entre ellas que sus raices se encuentran en los reales.
Ejemplo de cuadratura Gaussiana(no es el del video, tome otro de apoyo.)
% Definición del intervalo y la función a integrar
a = 0; b = 1; % Intervalo de integración
f = @(x) exp(x); % Función a integrar
% Especificación del número de puntos y los pesos de la cuadratura gaussiana
n = 4; % Número de puntos
xw = [-0.861136,0.861136,0.339981,-0.339981;0.347855,0.347855,0.652145,0.652145]; % Puntos y pesos
% Fórmula de la cuadratura gaussiana
x = ((b-a)*xw(1,:)+a+b)/2; % Cambio de variable para mapear los puntos al intervalo [a,b]
w = ((b-a)/2)*xw(2,:); % Escalamiento de los pesos
int_aprox = sum(w.*f(x)); % Fórmula de la cuadratura gaussiana
% Gráfica de la función y los puntos de la cuadratura
xx = linspace(a,b,100); % Puntos para graficar la función
yy = f(xx); % Valores de la función en los puntos
xx2 = linspace(x(1),x(end),100); % Puntos para graficar los puntos de la cuadratura
yy2 = zeros(size(xx2)); % Valores de la función en los puntos de la cuadratura
yy2 = yy2 + w(i)*f(x(i) + (xx2 - x(i))*(b-a)/(2*(n-1))); % Evaluación de los puntos de la cuadratura en la malla
figure; % Creación de la figura
hold on; % Mantenimiento de los gráficos anteriores
plot(xx,yy,'b'); % Graficar la función
plot(x,zeros(size(x)),'r*'); % Graficar los puntos de la cuadratura
plot(xx2,yy2,'g--'); % Graficar la cuadratura
xlabel('x'); ylabel('y'); % Etiquetas de los ejes
title(['Cuadratura gaussiana (n=',num2str(n),')']); % Título con el valor de n
legend('Función','Puntos de la cuadratura','Cuadratura gaussiana'); % Leyenda de la gráfica
Desarrollo
Resolver cada uno de los siguientes problemas.
Problema 1
PR04 - Problema 1
Realizar la convolución de las siguientes señales:
Las señales involucradas en la convolución son las siguientes:
y
Sabemos que el resultado analítico de hacer la convolucion es:
Realizamos la convolución en MATLAB por un método numérico, para ello ejecutamos las siguientes líneas:
x = @(t) (0<=t & t<=1).*(-t+1)+(1<t & t<=2).*(t-1);
h = @(t) (t>=0 & t<=1).*(1);
convconm(x,h,[-1 4],[-0.25 3.25],[-0.5 1.5],[-0.5 1])
Además, presentamos la siguiente animación, la cual intenta imitar la graficacion por el software Desmos.
Problema 2
PR04 - Problema 3
Realizar la convolución de las siguientes señales:
Las señales involucradas en la convolución son las siguientes:
y
Sabemos que el resultado analítico de hacer la convolucion es:
Para realizar la solución de la convolución mediante Matlab, se utilizó la función convconm en este caso no se necesitaron modificaciones para utilizar dicha función, ya que la función originalmente está creada para realizar convoluciones.
f=@(t) (t>=0).*(t<=1).*t + (t>1).*(t<=2);
Como podemos observar, se realizó la convolución. A continuación se presenta el resultado de la animación de la convolución de
trabajando sobre el resultado analítico obtenido en el PR04 3 Problema 3
PR06 - Problema e)
Realizar la autocorrelación de:
Sabemos que el resultado analítico de hacer la autocorrelación de
es: Para la realizar la solución de la autocorrelación mediante Matlab, se utilizó la función convconm con las modificaciones pertinentes para el correcto funcionamiento del programa en este caso específico; si bien, la función originalmente está creada para realizar convoluciones, sabemos que:
, entonces, podemos utilizar la convolución para obtener nuestra autocorrelación. Para ejecutar la autocorrelación ejecutamoss las siguientes 3 líneas de código:
- la señal original
- la señal invertida horizontalmente
- y la llamada a la función
g = @(t) (t<=0) - 2*(t<=-3) + (t<=-4); %Señal invertida
f = @(t) (t>=0) - 2*(t>=3) + (t>=4); %Señal original
convconm2(g,f) %Llamamos a la función
Como podemos observar, utilizamos la convolución para realizar nuestra autocorrelación. A continuación se presenta el resultado de la animación de la autocorrelación de
trabajando sobre el resultado analítico obtenido en el PR06 e) Problema 4
PR06 - Problema f)
Realiza la correlación de
con las señales definidas en los ejercicios anteriores, utiliza la equivalencia que prefieras.
Las señales involucradas en la convolución son las siguientes:
y
Sabemos que el resultado analítico de hacer la convolucion es:
Realizamos la convolución en MATLAB por un método numérico, para ello ejecutamos las siguientes líneas:
x=@(t)u(t)-2*u(t-2)+u(t-4);
h=@(t)u(t)-2*u(t-3)+u(t-4);
convconm(x,y,[-6 6], [-5 5],[-5 5],[-4 4])
Además, presentamos la siguiente animación, la cual intenta imitar la graficacion por el software Desmos.